home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / lib / rcscripts / net.modules.d / helpers.d / udhcpc-ifconfig < prev    next >
Text File  |  2006-04-25  |  2KB  |  85 lines

  1. #!/bin/sh
  2. # Copyright (c) 2004-2005 Gentoo Foundation
  3. # Distributed under the terms of the GNU General Public License v2
  4. # $Header$
  5.  
  6. # Contributed by Roy Marples (uberlord@gentoo.org)
  7.  
  8. action=${1}
  9. echo ${action}
  10.  
  11. case "${action}" in
  12.     bound|renew|deconfig)
  13.         # We handle these actions
  14.         ;;
  15.     nak|leasefail)
  16.         # These are valid actions, but we don't handle them
  17.         exit 0
  18.         ;;
  19.     *)
  20.         echo "We don't handle that action" >&2
  21.         exit 1
  22.         ;;
  23. esac
  24.  
  25. [[ ${action} == nak ]] && exit 0
  26.  
  27. # Fix any potential localisation problems
  28. # Note that LC_ALL trumps LC_anything_else according to locale(7)
  29. ifconfig() {
  30.     LC_ALL=C /sbin/ifconfig "$@"
  31. }
  32.  
  33. ip=${ip// }
  34. subnet=${subnet// }
  35. broadcast=${broadcast// }
  36. [[ -n ${broadcast} ]] && broadcast="broadcast ${broadcast}"
  37.  
  38. # If the current address does not match or we are deconfiguring
  39. # then we take the all the addresses on the interface down
  40. cur=$( ifconfig ${interface} | grep 'inet ' | awk -F: '{ print $2,$4 }' | awk '{ print $1,$3 }' )
  41. if [[ ${cur} != "${ip} ${subnet}" || ${action} == deconfig ]]; then
  42.     # Remove all aliases
  43.     for i in $( ifconfig | grep -o "^${interface}:[0-9]*" | tac | xargs ); do
  44.         ifconfig ${i} down
  45.     done
  46.  
  47.     # Remove all addresses
  48.     while ifconfig ${interface} | grep -q -m1 -o 'inet addr:[^ ]*' ; do
  49.         ifconfig ${interface} 0.0.0.0 || break
  50.     done
  51. fi
  52.  
  53. /sbin/ifconfig ${interface} up
  54.  
  55. [[ -z ${MODULES_DIR} ]] && MODULES_DIR=/lib/rcscripts/net.modules.d
  56. source ${MODULES_DIR}/helpers.d/config-system
  57.  
  58. if [[ ${action} == deconfig ]]; then
  59.     restore_configs
  60.     exit 0
  61. fi
  62.  
  63. # Configure our IP address
  64. ifconfig ${interface} inet ${ip} netmask ${subnet} ${broadcast}
  65.  
  66. eval dhcp=\" \$\{dhcp_${interface}\} \"
  67. if [[ ${dhcp} != *' nogateway '* ]]; then
  68.     # Configure our routers
  69.     for r in ${router}; do
  70.     while true; do
  71.         /sbin/route del default 2>/dev/null || break
  72.     done
  73.  
  74.     # We can only have one default route!
  75.     /sbin/route add default gw ${r} dev ${interface} && break
  76.     done
  77. fi
  78.  
  79. # Set our module to udhcpc if it's not set
  80. [[ -z ${module} ]] && module=udhcpc
  81.  
  82. config_system >/dev/null
  83.  
  84. exit 0
  85.